package com.itlong.cloud.enumerate.ecode_en;

import com.itlong.cloud.enumerate.DataStatusEnum;
import com.itlong.cloud.enumerate.ecode.ErrorCode;
import lombok.Getter;
import lombok.Setter;

/**
 * <desc>
 *      公共错误码定义_英文。
 * <desc/>
 *
 * @createDate 2017-12-28.
 */
public enum BaseErrorCodeEnumEN {

    /*mainCode为1表示APP模块错误，subCode可用范围为1至999；
   * mainCode为2表示运营模块错误，subCode可用范围为1至999；
   * mainCode为3表示物业模块错误，subCode可用范围为1至999；
   * mainCode为4表示APP-SDK模块错误，subCode可用范围为1至999；
   * mainCode为5表示一卡通模块错误，subCode可用范围为1至999；
   * mainCode为6表示云对讲模块错误，subCode可用范围为1至999；
   * */
    SUCCESS(0,"succeed"),

    ERROR(1,"fail"),

    NOT_PARAM(2," Miss required parameter"),

    PARAM_ERR(3,"parameter error "),
    ;
    @Setter
    @Getter
    private ErrorCode errorCode = new ErrorCode();

    private Integer type;


    BaseErrorCodeEnumEN(Integer type) {
        this.type = type;
    }

    BaseErrorCodeEnumEN(){

    }



    /** 主错误码与错误信息构造函数
     *
     * @param mainCode
     */
    BaseErrorCodeEnumEN(Integer mainCode, String codeMsg) {
        errorCode.setMainCode(mainCode);
        errorCode.setSubCode(0);
        errorCode.setCodeMsg(codeMsg);
    }

    /** 全参构造函数
     *
     * @param mainCode
     * @param subCode
     */
    BaseErrorCodeEnumEN(Integer mainCode, Integer subCode, String codeMsg){
        errorCode.setMainCode(mainCode);
        errorCode.setSubCode(subCode);
        errorCode.setCodeMsg(codeMsg);
    }



    /**
     * <p>
     *     获取枚举的类型。
     * <p/>
     *
     * @param type  类型值。
     * @return {@link int}。
     */
    public static int getType(Integer type) {
        DataStatusEnum[] types = DataStatusEnum.values();
        for(DataStatusEnum limitCategory : types ){
            if(limitCategory.getType() == type){
                return limitCategory.getType();
            }
        }
        return 0 ;
    }
}
